package cn.wk.basic.service;

import cn.wk.basic.query.BaseQuery;
import cn.wk.basic.query.DeptQuery;
import cn.wk.basic.utils.PageBean;
import cn.wk.org.domain.Department;

import java.util.List;

public interface IBaseService<T> {
    /**
     * 增
     * @param t 要添加的实例对象
     */
    void save(T t);

    /**
     * 修改
     * @param t 要修改的实例对象
     */
    void update(T t);

    /**
     * 删除
     * @param id 要删除数据的id
     */
    void delete(Long id);

    /**
     * 查询所有
     * @return 返回该实例的list集合
     */
    List<T> findAll();         //查询所有

    /**
     *  高级查询，查询总条数
     * @param query
     * @return 返回总条数
     */
    Long query(BaseQuery query);

    /**
     * 高级查询，查询数据，分页
     * @param query
     * @return 返回一个集合 里面有总条数和数据
     */
    PageBean<T> queryAll(BaseQuery query);        //高级查询并分页
    /**
     * 批量删除
     * @param t 传入参数为实例对象集合
     */
    void delBatch(List<T> t);

    /**
     * 根据ID查询
     * @param id
     * @return 返回该id所对应的实例
     */
    T findById(Long id);
}
